PAGER

Desarrollo conjunto de 3ºaño C.B.-5ºaño Electrónica

Docentes a cargo: 3ºaño- Marcelo Cañari; 5ºaño- Roberto Borra

PRINCIPAL Arriba PAGER TA-TE-TI

DESCRIPCION - TRANSMISOR - RECEPTOR - Prog.Asm - Prog.V.B.

Descripción:

Este conjunto de dispositivos permite la transmisión de mensajes escritos, desde una PC. hasta un pequeño receptor, valiéndose para el enlace de RF., medio de vinculación utilizado, de un par de híbridos, los denominados Virtual Wire, transfiriendo directamente los datos presentes en el puerto serie asincronico con protocolo RS232 que cuentan todas las PC. hasta el receptor donde son interpretados directamente por un microcontrolador, que no cuentan con UART incorporada en su hard si no que se la implemento en soft,y los visualiza mediante un display LCD del tipo inteligente de 2 líneas por 20 caracteres emitiendo una señal sonora con cada nuevo mensaje.

La interface hombre-maquina que se implemento para la PC es del tipo gráfica, realizada en Visual Basic.

El Transmisor:

Esta desarrollado alrededor de un híbrido con oscilador controlado por resonador SAW, que en nuestro caso, fija su frecuencia de trabajo en 433.92Mhz.y un consumo máximo de 9mA para tensiones de 1.5V. a 12V.

TRANS.gif (2285 bytes)

Esto permite tomar alimentación  del mismo puerto serie de la PC al que se conecta, posibilitando además encapsularlo dentro de las tapas de el conector DB25 junto a los componentes necesarios para completar la fuente de alimentacion formada por un diodo, un capacitor electrolitico (que sirve como tapon del orificio destinado al cable) y un pull-down en la entrada de datos, necesario porque la salida RS232 alterna entre +12V -12V bloqueado este ultimo por un diodo, para adaptarlo a la entrada del transmisor; y sirve, a la vez, de indicador luminoso de transmisión;formando un modulo robusto y compacto (ver detalle foto 1), del que solo se prolonga la antena (un conductor de 18 cm. de longitud).

PARA VER EL CIRCUITO HACER CLIC AQUI

    Puede verse el modelo terminado y su interior

co.jpg (160963 bytes)         

El Receptor:

Este modulo consta de tres componentes claves.

En primer lugar el encargado de recibir la señal de RF.; un hibrido pareja del transmisor antes referido que cuenta con dos salidas, una analogica y otra digital; la primera usada en este caso solo para monitorear mediante un osciloscopio el ajuste de la banda, lo que se logra variando la posicion del nucleo de su pequeña bobina hasta conseguir la mayor amplitud en la señal aqui presente.

En segundo lugar, el corazon de este desarrollo, un microcontrolador PIC16C84 o 16F84. A este ingresa por su pin de interrupcion externa, la señal disponible en la salida digital del hibrido receptor la cual es procesada para decodificar su informacion.

Por ultimo un display de LCD, los llamados inteligentes, es encargado de mostrar el mensaje.Ademas incorpora un buzer piezoelectrico, que puede, por su bajo consumo, conectarse directamente a la salida del PIC e indicar en forma sonora la recepcion de un nuevo mensaje.

PARA VER EL CIRCUITO HACER CLIC AQUI

PROGRAMA EN LENGUAJE ENSAMBLADOR

;			CLOCK 	= 4 Mhz.
;			BAUDIOS	=1200
;			BITS	=8
;			PARIDAD	=N
;			STOP	=1
;	CICLOS POR BIT   =833	 PRESACLER =4	RTCC =208
;				OFFSET DE INT 16 CICLOS
;	CICLOS START_BIT =1250	 PRESCALER =8	RTCC =156
;				OFFSET DE INT 32 CICLOS      
	LIST P=16C84     
		INCLUDE	P16F84.INC
;=================================================================
;
;=================================================================
REG_W           EQU	0CH	;AUX PARA GUARDAR W
REG_STATUS      EQU	0DH	;AUX PARA GUARDAR STATUS	
PUNT_M	        EQU	0EH	;PUNTERO PARA MOSTRAR MENSAJE
PUNT_R		EQU	0FH	;PUNTERO PARA ALMACENAR MENSAJE
LONG_MENS	EQU	10H	;LONGITUD DEL MENSAJE
STATUS_MENS	EQU	11H	;STATUS DEL MENSAJE
TIEMPO		EQU	12H	;TIEMPO DE RETARDO PARA EL DISPLAY
POSICION	EQU	13H	;POSICION DEL CURSOR EN EL DISPLAY
CONT_BIT	EQU	14H	;CONTADOR DE BITS RECIBIDOS
RX_REG		EQU	15H	;REGISTRO DE RECEPCION		
RX_TEMP		EQU	16H	;GUARDA TEMPORALMENTE BIT RECIBIDO
CONT_BYTE	EQU	17h	;CUENTA LOS BYTE RECIBIDOS
PUNT_TEM        EQU     18H	;GUARDA EL COMIENZO DEL PUNTERO
PRINCIPIO	EQU	19H	;COMIENZO DEL BUFFER
FIN		EQU	4FH	;ULTIMA POSICION DE MEMORIA DEL 84
_OPTION		EQU	81H
RTCC		EQU	01H
;=================================================================
;		STATUS_MENS
;=================================================================
#DEFINE		MOSTRANDO       STATUS_MENS,0
#DEFINE		RECIV_BYTE     	STATUS_MENS,1
#DEFINE		RECIV_OTRO   	STATUS_MENS,2
#DEFINE	     	MENS_RECIV   	STATUS_MENS,3
;#DEFINE	                STATUS_MENS,4
;#DEFINE	 	        STATUS_MENS,5
#DEFINE	       	XON_DETEC     	STATUS_MENS,6
#DEFINE		ERROR_FRAME    	STATUS_MENS,7
;=================================================================
;=================================================================
#DEFINE		_C	STATUS,C
#DEFINE		_Z	STATUS,Z
#DEFINE		_T0IF	INTCON,T0IF
#DEFINE		_T0IE	INTCON,T0IE
#DEFINE		_GIE	INTCON,GIE     
#DEFINE		RS	PORTA,0	;STATUS DE DISPLAY(DATO-CONTROL)
#DEFINE 	E	PORTA,1	;ENABLE DE DISPLAY
#DEFINE 	RX	PORTA,4
#DEFINE		_RX	RX_TEMP,4     
#DEFINE		PAG0	BCF	STATUS,5
#DEFINE 	PAG1	BSF	STATUS,5
;=================================================================
;        	MACROS	
;=================================================================
PUSH		MACRO
		MOVWF	REG_W
		SWAPF	STATUS,W
		PAG0
		MOVWF	REG_STATUS		
		ENDM	     
;=================================================================
POP		MACRO
		SWAPF	REG_STATUS,W
		MOVWF	STATUS
		SWAPF	REG_W
		SWAPF	REG_W,W
		ENDM
;=================================================================
;		VECTOR	RESET
;=================================================================
		ORG 	0H     
	GOTO	INICIO
;=================================================================
;		VECTOR	INTERRUPCION
;=================================================================
		ORG	04H     
		BTFSS	_T0IF		;INTERRUPCION DEL RTCC ?
		RETFIE			;NO! VOLVER Y GIE
		PUSH			;SI! GUARDAR REGISTROS
		BTFSC	RECIV_BYTE	;EN PROGRESO RECEP.DE BYTE
		GOTO	RECIV_BIT	;SI! SEGUIR RECIBIENDO
		GOTO	START_BIT	;NO! DETECTO UN START BIT?
RESTAURA_REG
		POP			;RECUPERAR REGISTROS
		BCF	_T0IF
		RETFIE
		
;=================================================================
;		PRINCIPAL
;=================================================================
INICIO
		PAG1
		CLRF	TRISB		;PORTB COMO SALIDA
		MOVLW	B'10000'
		MOVWF	TRISA		;RX RA4 COMO ENTRADA
		PAG0	
   		BCF	_T0IF		;LIMPIAR FLAG INT. TIMER0
   		BSF	_T0IE		;HABILITAR INT. TIMER0
		BSF	_GIE		;HABILITAR INT. GLOBALES
		CLRF	STATUS_MENS	;INICIALIZA EL STATUS_MENS
		MOVLW	PRINCIPIO	;INICIALIZA LOS PUNTEROS 
		MOVWF	PUNT_R
		MOVWF	PUNT_M
		MOVWF     PUNT_TEM
;=================================================================
;		SET_DISPLAY
;=================================================================
                MOVLW   38H	        ;DOS LINEAS 8 BITS
        	CALL    CONTROL
        	MOVLW   06H	        ;SIN DESPLAZAR
        	CALL    CONTROL
        	MOVLW   0CH	        ;ACTIVA DISPLAY
        	CALL    CONTROL
		MOVLW	'H'
		CALL	DATO
;=================================================================
;                   LOOP
;================================================================= 
ESPERA_MENS
		CALL	NUEVO_BYTE
ESPERA
		BTFSS	RECIV_OTRO
		GOTO	ANALIZA_MENS
		BTFSC	MENS_RECIV
		CALL	MUESTRA
		GOTO	ESPERA
ANALIZA_MENS		
		BTFSC     ERROR_FRAME
		GOTO      MENS_NO_VALIDO
		BTFSC     XON_DETEC
		GOTO      GUARDAR
		MOVLW	.17
		XORWF	RX_REG,W
		BTFSS	_Z
		GOTO	ESPERA_MENS
		BSF       XON_DETEC
                GOTO      ESPERA_MENS
GUARDAR
		MOVLW	.13
		XORWF	RX_REG,W
		BTFSC	_Z
		GOTO	FIN_MENS
		INCF	CONT_BYTE
		MOVF	PUNT_R,W
		MOVWF	FSR
		MOVF	RX_REG,W
		MOVWF	INDF
		INCF	PUNT_R
		MOVLW	(FIN + 1)
		XORWF	PUNT_R,W
		BTFSS	_Z
		GOTO	ESPERA_MENS
		MOVLW	PRINCIPIO
		MOVWF	PUNT_R
		GOTO	ESPERA_MENS
FIN_MENS
		MOVF	CONT_BYTE,W
		MOVWF	LONG_MENS
		CLRF	CONT_BYTE
		BSF	MENS_RECIV
		MOVF      PUNT_R,W
		MOVWF     PUNT_TEM
		BCF       XON_DETEC
		GOTO	ESPERA_MENS
MENS_NO_VALIDO
                    MOVF      PUNT_TEM,W
                    MOVWF     PUNT_R
                    CLRF	CONT_BYTE
                    BCF       XON_DETEC
                    GOTO      ESPERA_MENS
;===============================================================
NUEVO_BYTE	
		BSF	RECIV_OTRO
		MOVLW	9
		MOVWF	CONT_BIT	;INICIALIZA EL 
		CLRF	RX_REG		;CONTADOR DE BITS
   		BCF	ERROR_FRAME
   		PAG1
   		MOVLW	B'00111000'	;INCREMENTA EL RTCC CON 
   		MOVWF	_OPTION		;EL START BIT
   		PAG0
   		MOVLW	0FFH		;CARGAR RTCC CON 255
   		MOVWF	RTCC		;PARA QUE LO DISPARE EL
   		RETURN			;FLANCO DEL START BIT 
;===============================================================
START_BIT
		PAG0
		BTFSC	RX
		GOTO	FALSO_START_BIT
		BSF	RECIV_BYTE
		PAG1
		MOVLW	02H
		MOVWF	_OPTION
		PAG0
		MOVLW	-.152
		MOVWF	RTCC
		GOTO	RESTAURA_REG
FALSO_START_BIT
		MOVLW	0FFH
		MOVWF	RTCC
		GOTO	RESTAURA_REG
RECIV_BIT
		PAG1
		MOVLW	01H
		MOVWF	_OPTION
		PAG0
		MOVF	PORTA,W
		MOVWF	RX_TEMP
		MOVLW	-.204
		MOVWF	RTCC
		MOVF 	PORTA,W
		XORWF	RX_TEMP,W
		ANDLW	B'10000'
		BTFSC	_Z
		GOTO	TOMAR
		MOVF	PORTA,W
		MOVWF	RX_TEMP
TOMAR
		DECFSZ	CONT_BIT
		GOTO	RECIV_PROXIMO
RECIV_STOP_BIT	
		BTFSS	_RX
		BSF	ERROR_FRAME
		BCF	RECIV_BYTE
		BCF	RECIV_OTRO
		GOTO	RESTAURA_REG
RECIV_PROXIMO
		BCF	_C
		BTFSC	_RX
		BSF	_C
		RRF	RX_REG
		GOTO	RESTAURA_REG
;===============================================================
;               RUTINA DE DISPLAY         
;===============================================================
RETARDO         MOVLW   0H
        	MOVWF   TIEMPO
DECRE           DECFSZ  TIEMPO
         	GOTO    DECRE
        	RETURN   
CONTROL         BCF     RS
        	GOTO    PASO2     
DATO            BSF     RS     
PASO2           BSF     E
        	MOVWF   PORTB
        	CALL    RETARDO
        	BCF     E
        	CALL    RETARDO
        	RETURN     
;===============================================================
;               MOSTRAR MENSAJE                      
;===============================================================
MUESTRA   	BTFSC	MOSTRANDO
		GOTO	CICLO
		BSF	MOSTRANDO
	        MOVLW   01H
	        CALL    CONTROL		;LIMPIAR DISPLAY Y HOME
CICLO
                MOVF    PUNT_M,W
        	MOVWF	FSR
        	MOVF	INDF,W
        	CALL    DATO
        	INCF    PUNT_M
		MOVLW	(FIN + 1)
		XORWF	PUNT_M,W
		BTFSS	_Z
		GOTO	FALTA
		MOVLW	PRINCIPIO
		MOVWF	PUNT_R
FALTA
        	MOVLW   10H		;SI COMPLETO LA 
        	XORWF   POSICION,W	;PRIMER LINEA
		BTFSS   _Z		;PASAR A LA SEGUNDA
		GOTO    FINAL		;FIN DE MENSAJE ?
        	MOVLW   0C0H		;DDRAM 1ºCARACTER 2ºLINEA
        	CALL    CONTROL
FINAL
        	INCF	POSICION
        	DECFSZ	LONG_MENS	;FIN DE MENSAJE ?
        	RETURN			;NO
        	BCF	MOSTRANDO	;SI
		BCF	MENS_RECIV
        	RETURN	
;=================================================================
;=================================================================
        	END           

PROGRAMA VISUAL BASIC        
Podes bajar aqui el ejecutable Pager.exe, es una version para 
32 bits (WINDOWS 95 o 98); el cual se detalla a continuacion


Private Sub exit_Click()
Unload Pager
End Sub

Private Sub Form_Load()

MSComm1.Settings = "1200,N,8,1"
MSComm1.InputLen = 0

Call port1_Click
End Sub
Private Sub envia_Click()

MSComm1.Output = " " + Chr$(17) + " " + Text1.Text + Chr$(13)

StatusBar1.Panels(4).Text = "enviado"

End Sub

Private Sub port1_Click()
On Error GoTo ManejoError
If MSComm1.PortOpen Then
MSComm1.PortOpen = False
End If
MSComm1.CommPort = 1
MSComm1.PortOpen = True
StatusBar1.Panels(2).Text = "Com1"
port2.Checked = False
port1.Checked = True
Exit Sub
ManejoError:
MsgBox "El puerto COM1 no existe o esta en uso", , "ERROR de PUERTO"
Call port2_Click
End Sub

Private Sub port2_Click()
On Error GoTo ManejoError
If MSComm1.PortOpen Then
MSComm1.PortOpen = False
End If
MSComm1.CommPort = 2
MSComm1.PortOpen = True
StatusBar1.Panels(2).Text = "Com2"
port1.Checked = False
port2.Checked = True
Exit Sub
ManejoError:
MsgBox "El puerto COM2 no existe o esta en uso", , "ERROR de PUERTO"
Call port1_Click
End Sub

Private Sub Text1_Change()
StatusBar1.Panels(4).Text = "sin enviar"

End Sub

Private Sub Text1_DblClick()
Text1.Text = ""
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim Msg

Msg = "Esta seguro que quiere salir del programa?"
If MsgBox(Msg, vbQuestion + vbYesNo, Me.Caption) = vbNo Then
Cancel = True

End If
End Sub

Private Sub uso_Click()
msghelp = "Introdusca un mensaje en el cuadro" & Chr(13) & " y luego haga clik en el boton enviar" & Chr(13) & Chr(13) & "Haciendo doble clik en el cuadro " & Chr(10) & "limpia el mensaje actual"
MsgBox msghelp, vbInformation, "Forma de Uso"

End Sub
Private Sub acerca_Click()
Msg = "Programa Ver. 1.0 realizada por alumnos de 3ºaño de la ET Nº12" + Chr(10)
Msg = Msg + "Docente a cargo: Marcelo Cañari" + Chr(10)
Msg = Msg + "Presentado el año 1998 en la muestra" + Chr(10)
Msg = Msg + "Bs.As., la escuela publica y su gente" + Chr(10)
Msg = Msg + Chr(13) + Chr(13) + " Ver 1.2 32 bits"
a = MsgBox(Msg, 64, " Acerca de PAGER", "", 400)

End Sub

encabezado de pagina

No dudes en comunicarte ante cualquier duda o inquietud  e-mail  

Ultima actualizacion de este sitio 25/04/99